トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     外部swfの読み込み(ActionScript3)
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
Notty
Åê¹ÆNo.41334
投稿日時: 2009-1-28 18:46
新米
居住地: 北区
投稿: 14
使用環境:
Mac OSX 10.5
Flash CS3
外部swfの読み込み(ActionScript3)
はじめて投稿させて頂きます。
現在完成しているFlash(Main.swf)に、そのFlash全体を監視するプリローダーの機能を加えたく、別途プリローダー専用のFlash(load.swf)を作成し、その中にMain.swfを読み込もうと考えています。

プリローダー用flaの1フレーム目に、
var par:int;
addEvetnListener(Event.ENTER_FRAME, loadCheck);
function loadCheck(event:Event){
par = Math.floor(loaderInfo.bytesLoaded /
loaderInfo.bytesTotal * 100);
if(par == 100) gotoAndStop(2);
}

と記述し、2フレーム目に
var url:URLRequest = new URLRequest("Main.swf");
var loader:Loader = new Loader();
loader.load(url);
と記述し、addChild(loader)した段階で、
『Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません』
と出力されます。

試しに、Main.swfを、ステージに四角形のシンボルを配置しただけのシンプルなものに変更してみると、エラーは表示されませんでした。
なのでエラーの原因には、「本来のMain.swfでは、シンボルそれぞれにカスタムクラスを設定してあり、ドキュメントクラスで、カスタムクラスの設定されているシンボルをインスタンス化し、動的にステージに配置している。」という事が絡んでいると思うのですが、
後者の場合、なぜエラーが出るのか、考えられる原因をご教授頂ければと思います。

何卒、宜しくお願い致します。
永井勝則
Åê¹ÆNo.41365
投稿日時: 2009-1-31 11:25
職人
居住地: 白馬村
投稿: 716
使用環境:
Windows 7 :Flash CS4:
10.5.8 :Flash CS4
Re: 外部swfの読み込み(ActionScript3)
自分で実際に確認していないので、はずしているかもしれませんが、
2フレームめのloaderにはMain.swfのロードに関するイベントリスナーを設定して、
ロードの完了後addChild(load)する必要があるのではないでしょうか。
とにかくロードにはなにがしかの時間がかかります。

1フレームめのロードチェックでは「そのFlash全体を監視する」ことができているのですか?
また1フレームめのメインのタイムラインに対するロードチェックのイベントリスナーは、チェックが終わったら登録の解除をすべきです。


----------------
永井勝則:
himco.jp :

Notty
Åê¹ÆNo.41367
投稿日時: 2009-1-31 18:06
新米
居住地: 北区
投稿: 14
使用環境:
Mac OSX 10.5
Flash CS3
Re: 外部swfの読み込み(ActionScript3)
永井様

返信を頂き有り難う御座います。
最初の質問内容で、私の勘違いが一点有りまして、addChild()した段階ではなく、loader.load(url)を実行した辞典で、#1009のエラーが発生してしまいます。
そして、trace()で確認したところ、1フレーム目で、ロード状況の監視は出来ていないようなのです...申し訳有りません。

Main.swfがフレームにスクリプトを記述せず、全て外部ASファイルで制御している物で、シンボルのリンケージを1フレーム目に設定せざるおえないのです。←間違いしょうか?

そこで、調べていたところ、別途プリローダー用のSWFを作り、そこにメインとなるSWFをロードする方法で、Main.swfを含めた容量を監視出来るという記事を発見し、試したら#1009エラーが出てしまった。という状況なのです。
何か、根本的な間違いをしているのでしょうか...

皆さんは、フレームアクションを使用しないムービー全体のプリローダーはどうやって実装しているのでしょうか?

何卒ご教授下さいませ。
永井勝則
Åê¹ÆNo.41368
投稿日時: 2009-1-31 20:00
職人
居住地: 白馬村
投稿: 716
使用環境:
Windows 7 :Flash CS4:
10.5.8 :Flash CS4
Re: 外部swfの読み込み(ActionScript3)
特有の条件があるようなので、こちらで問題の実態や詳細は把握しかねます。
PregressEventというクラスやEvent.ADDED、Event.ADDED_TO_STAGEイベントを調べられたらどうでしょう?





----------------
永井勝則:
himco.jp :

Notty
Åê¹ÆNo.41375
投稿日時: 2009-2-1 14:53
新米
居住地: 北区
投稿: 14
使用環境:
Mac OSX 10.5
Flash CS3
Re: 外部swfの読み込み(ActionScript3)
おっしゃる通りですね。
私のレベルでは原因の解明に至りませんでした。。。

引用:

knagaiさんは書きました:
特有の条件があるようなので、こちらで問題の実態や詳細は把握しかねます。


このサイトにあるプリローダー関連の記事は一通り目を通したのですが、私の様なケースの記事はなかったです。

一般的に、ムービー全体というか、1フレーム目にリンケージされているシンボルのサイズも含めた容量を監視したい時はどういった手法をとるべきなのでしょう?

漠然としていてすみません。
何か方法をご存知の方がいらっしゃいましたら、是非お願いします!
永井勝則
Åê¹ÆNo.41376
投稿日時: 2009-2-1 17:25
職人
居住地: 白馬村
投稿: 716
使用環境:
Windows 7 :Flash CS4:
10.5.8 :Flash CS4
Re: 外部swfの読み込み(ActionScript3)
何でお困りなのか、いまだに把握できません。

Main.swfをロードするLoader.flaのメインのタイムラインには
たとえば次のようなコードを書きます。

このコードでどのような問題が起きるのかを書いていただけると
理解できるかもしれません。

// Loader.flaのメインのタイムライン
var loader:Loader = new Loader();

// ロード完了用リスナー
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadedListener);
// 進行状況監視リスナー
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressListener);
// メインのタイムラインへの表示オブジェクトの追加を監視するリスナー
addEventListener(Event.ADDED, onAddedListener)

loader.load(new URLRequest("Main.swf"));
// 追加するMain.swf
var Main:MovieClip

function onLoadedListener(evt:Event):void {
	trace("LOADED");
	// 変数Mainに代入
	Main = evt.target.content
	
	loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLoadedListener);
	loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, onProgressListener);
	removeEventListener(Event.ADDED, onAddedListener)
	// 飛びたければ飛ぶ
	gotoAndStop("loaded");
	// 行き先フレームで、addChild(Main);
}
// ロード状況の監視
function onProgressListener(evt:ProgressEvent):void {
	trace(evt.bytesLoaded);
	trace(evt.bytesTotal);
}

function onAddedListener(evt:Event):void {
	trace("onAdded")
}
stop();



----------------
永井勝則:
himco.jp :

Notty
Åê¹ÆNo.41377
投稿日時: 2009-2-1 23:58
新米
居住地: 北区
投稿: 14
使用環境:
Mac OSX 10.5
Flash CS3
Re: 外部swfの読み込み(ActionScript3)
永井様

取り急ぎの報告になりますが、原因が判明しました。

先ほど記載して頂いたコードで、読み込み先のMain.swfを、いくつかの異なるswfファイルとすげ替えて検証していたところ、その中で#1009エラーが出る物は、例えばstage.stageWidth等、stageに対しての何らかの操作をしているということが分かり、
そこを、stageを参照しないプリミティブ型の数値に書き換えると、エラーが出なくなりました。

読み込み先のswfがstageのプロパティを参照していると、なぜエラーが出るのかまでは分かりませんが、一応原因が分かったので問題が解決出来そうです。

分かりにくい文面の質問に対応して下さり、本当に有難うございました。


野中文雄
Åê¹ÆNo.41378
投稿日時: 2009-2-2 0:30
ちょんまげら
居住地: 東京
投稿: 4166
使用環境:
CS4 .4.11 Vista Home Premium (SP1)
Re: 外部swfの読み込み(ActionScript3)
インスタンスを表示リストに加えないうちに、インスタンスからDisplayObject.stageプロパティにアクセスしていませんか?
引用:
Nottyさんは書きました:
読み込み先のswfがstageのプロパティを参照していると、なぜエラーが出るのかまでは分かりませんが、一応原因が分かったので問題が解決出来そうです。


----------------
 

Notty
Åê¹ÆNo.41379
投稿日時: 2009-2-2 1:43
新米
居住地: 北区
投稿: 14
使用環境:
Mac OSX 10.5
Flash CS3
Re: 外部swfの読み込み(ActionScript3)
野中様

返信を頂き有難うございます。
メインとなるFLAファイルに設定したドキュメントクラスのコンストラクタで、DisplayObject.stageプロパティにアクセスしていた事が原因でした。
下記のアドバイスを頂き、ActionScript3.0 プロフェッショナルガイドの『デバッグは犯罪の捜査と同じ』の項を読み返していたら、理由がはっきりと分かりました。

的確なご指摘を頂き、有り難う御座いました。
引用:

Fumioさんは書きました:
インスタンスを表示リストに加えないうちに、インスタンスからDisplayObject.stageプロパティにアクセスしていませんか?
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops